const sequelize = require('../config/database');
const User = require('../models/User');
const Announcement = require('../models/Announcement');
const Job = require('../models/job');
const Company = require('../models/company');
const Resume = require('../models/resume');
const Application = require('../models/Application');

// 样例数据
const seedData = async () => {
  try {
    // 同步数据库模型
    await sequelize.sync({ force: false });
    console.log('数据库模型同步完成');

    // 创建管理员用户
    const adminUser = await User.findOrCreate({
      where: { email: 'admin@example.com' },
      defaults: {
        name: '系统管理员',
        password: 'admin123', // 实际环境需加密
        role: 'admin',
        phone: '13800138000',
        emailVerified: true
      }
    });
    console.log('管理员用户创建/验证完成');

    // 创建企业用户
    const companyUser = await User.findOrCreate({
      where: { email: 'company@example.com' },
      defaults: {
        name: '科技有限公司',
        password: 'company123',
        role: 'company',
        phone: '13900139000',
        emailVerified: true
      }
    });

    // 创建企业资料
    const company = await Company.findOrCreate({
      where: { userId: companyUser[0].id },
      defaults: {
        name: '科技有限公司',
        industry: '信息技术',
        scale: '100-500人',
        address: '北京市海淀区',
        description: '专注于人工智能领域的高科技企业',
        contactPerson: '张经理',
        contactPhone: '13900139000'
      }
    });
    console.log('企业用户及资料创建/验证完成');

    // 创建求职者用户
    const jobSeekerUser = await User.findOrCreate({
      where: { email: 'seeker@example.com' },
      defaults: {
        name: '求职者小李',
        password: 'seeker123',
        role: 'job_seeker',
        phone: '13700137000',
        emailVerified: true
      }
    });
    console.log('求职者用户创建/验证完成');

    // 创建公告
    await Announcement.findOrCreate({
      where: { title: '2024届毕业生招聘启动' },
      defaults: {
        content: '我校2024届毕业生招聘工作正式启动，欢迎各用人单位积极报名参与校园招聘活动。',
        isActive: true,
        createdBy: adminUser[0].id
      }
    });

    await Announcement.findOrCreate({
      where: { title: '招聘会场安排通知' },
      defaults: {
        content: '3月15日将在学校体育馆举办春季招聘会，展位申请截止日期为3月10日。',
        isActive: true,
        createdBy: adminUser[0].id
      }
    });
    console.log('公告数据创建/验证完成');

    // 创建职位
    await Job.findOrCreate({
      where: { title: '前端开发工程师' },
      defaults: {
        companyId: company[0].id,
        department: '技术部',
        salaryRange: '10k-15k',
        city: '北京',
        education: '本科及以上',
        experience: '应届毕业生',
        description: '负责公司Web前端开发，使用React框架构建用户界面',
        requirements: '熟悉HTML/CSS/JavaScript，了解React或Vue框架',
        isActive: true
      }
    });

    await Job.findOrCreate({
      where: { title: 'Java后端开发' },
      defaults: {
        companyId: company[0].id,
        department: '技术部',
        salaryRange: '12k-18k',
        city: '北京',
        education: '本科及以上',
        experience: '应届毕业生',
        description: '负责后端API开发，使用Spring Boot框架',
        requirements: '熟悉Java，了解Spring Boot，有数据库基础',
        isActive: true
      }
    });
    console.log('职位数据创建/验证完成');

    console.log('所有样例数据创建/验证完成');
  } catch (error) {
    console.error('数据填充失败:', error);
  } finally {
    // 关闭数据库连接
    await sequelize.close();
  }
};

// 执行种子数据填充
seedData();